package com.qlk.vorder.service;

import java.util.List;

import com.qlk.common.utils.page.PageUtil;
import com.qlk.common.utils.wrap.Wrapper;
import com.qlk.vorder.domain.Orders;
import com.qlk.vorder.domain.query.OrdersQuery;
import com.qlk.vorder.porxy.dto.QueryRefundResponse;
import com.qlk.vorder.sdk.api.request.OrdersRequest;
import com.qlk.vorder.sdk.api.request.OrdersRequestDto;

/**
 * OrdersService接口
 * 
 * @author zhaoyanan
 * @version 2016-7-28 14:14:00
 * 
 */
public interface OrdersService {

	/**
	 * 批量增加对象信息
	 * 
	 * @param ordersList
	 * @return
	 */
	public boolean insert(List<Orders> ordersList);

	/**
	 * 单个增加对象信息
	 * 
	 * @param orders
	 * @return
	 */
	public boolean insert(Orders orders);

	/**
	 * 更新 对象信息
	 * 
	 * @param orders
	 *            对象信息对象
	 * @return false：失败 true：成功
	 */
	public boolean update(Orders orders);

	/**
	 * 根据查询Bean获取对象集合，无翻页
	 * 
	 * @param queryBean
	 * @return
	 */
	public List<Orders> queryOrdersList(OrdersQuery queryBean);


    /**
     * 下载
     * @param queryBean
     * @return
     */
    public List<Orders> queryOrdersListForDownLoad(OrdersQuery queryBean);

	/**
	 * 根据查询Bean获取对象集合，带翻页
	 * 
	 * @param queryBean
	 * @param pageUtil
	 * @return
	 */
	public List<Orders> queryOrdersListWithPage(OrdersQuery queryBean, PageUtil pageUtil);

	/**
	 * 根据主键删除对象信息，该处做的是逻辑删除
	 * 
	 * @param orders
	 *            　
	 * @return
	 */
	public boolean delete(Orders orders);

	/**
	 * 根据主键获取对象信息
	 * 
	 * @param id
	 *            主键字段
	 * @return 对象信息
	 */
	public Orders getOrdersById(Long id);


    /**
     * 通过订单号查询退款信息
     * @param orderid
     * @return
     */
    public List<QueryRefundResponse> getRefundListByOrderid(String orderid);

	/**
	 * 根据主键集合批量删除对象信息，该处做的是逻辑删除
	 * 
	 * @param orderss
	 *            Orders集合
	 * @return
	 */
	public boolean delete(Orders[] orderss);

	/**
	 * 查询订单信息
	 * 
	 * @param ordersQuery
	 * @return
	 */
	public Orders getOrdersByOrderId(OrdersQuery ordersQuery);

	/**
	 * 接收推送数据
	 * 
	 * @param request
	 * @return
	 */
	public Wrapper<?> innerData(OrdersRequestDto request);

	/**
	 * 根据订单号批量查询订单信息
	 * 
	 * @param request
	 * @return
	 */
	public List<Orders> getBatchOrders(OrdersRequest request);

	/** 根据订单号创建退款单 */
	public boolean createRefundTask(String keyword1);

}
